/*-*-C-*-
 * Object definitions for Misc CSE
 */

#include "resed.h"
#include "main.h"

#include "wimp.h"
#include "resformat.h"
#include "newmsgs.h"

#include "format.h"
#include "relocate.h"
#include "objedit.h"

#include "colours.h"
#include "icondefs.h"
#include "objdefs.h"
#include "object.h"



/* ------------------------ colour menu definition ----------------------- */

#define  CM_FIND(field)   offsetof (ColourMenuTemplateRec, field)

static RefDefRec cmrefs[] =
{
    { REF_MSG, CM_FIND(title), FALSE },
    { REF_END }
};

static TitleFldRec cmf1 =
    { I_COLOURMENU_TITLE_DEFAULT, I_COLOURMENU_TITLE_OTHER,
      I_COLOURMENU_TITLE, I_COLOURMENU_TITLEMAX,
      I_COLOURMENU_TITLEMAX_ADJ_UP, I_COLOURMENU_TITLEMAX_ADJ_DOWN,
      CM_FIND(title), CM_FIND(maxtitle) };
static FlagFldRec cmf2 =
    { I_COLOURMENU_INCLUDENONE, COLOURMENU_NONEENTRY, TRUE };
static FlagFldRec cmf3 =
    { I_COLOURMENU_EVENT_BEFORE, COLOURMENU_GENERATESHOWEVENT, TRUE };
static FlagFldRec cmf4 =
    { I_COLOURMENU_EVENT_HIDDEN, COLOURMENU_GENERATEHIDEEVENT, TRUE };

static FieldDefRec cmfields[] =
{
    { FLD_TITLE,            (FldDefPtr) &cmf1 },
    { FLD_FLAG,             (FldDefPtr) &cmf2 },
    { FLD_FLAG,             (FldDefPtr) &cmf3 },
    { FLD_FLAG,             (FldDefPtr) &cmf4 },
    { FLD_END, NULL}
};

static TitleClickRec cma1 =
    { I_COLOURMENU_TITLE_DEFAULT, I_COLOURMENU_TITLE_OTHER,
      I_COLOURMENU_TITLE, I_COLOURMENU_TITLEMAX,
      I_COLOURMENU_TITLEMAX_ADJ_UP, I_COLOURMENU_TITLEMAX_ADJ_DOWN };
static SpecialClickRec cma2 = { object_cm_includenone };
static SpecialClickRec cma3 = { object_cm_colour };
static ToggleFadeClickRec cma4 = { I_COLOURMENU_COLOUR };
static ToggleFadeClickRec cma5 = { I_COLOURMENU_COLOUR_POPUP };

static ClickDefRec cmclicks[] =
{
    { I_COLOURMENU_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &cma1 },
    { I_COLOURMENU_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &cma1 },
    { I_COLOURMENU_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &cma1 },
    { I_COLOURMENU_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &cma1 },
    { I_COLOURMENU_INCLUDENONE,       ACT_SPECIAL, (ClickParamsPtr) &cma2 },
    { I_COLOURMENU_COLOUR_POPUP,      ACT_SPECIAL, (ClickParamsPtr) &cma3 },
    { I_COLOURMENU_HASCOLOUR,      ACT_TOGGLEFADE, (ClickParamsPtr) &cma4 },
    { I_COLOURMENU_HASCOLOUR,      ACT_TOGGLEFADE, (ClickParamsPtr) &cma5 },
                                 { 0, ACT_END }
};

static DropDefRec cmdrops[] =
{
    {-2}
};


/* ------------------------ colour dbox definition ----------------------- */

#define  CD_FIND(field)   offsetof (ColourDboxTemplateRec, field)

static RefDefRec cdrefs[] =
{
    { REF_MSG, CD_FIND(title), FALSE },
    { REF_END }
};

static TitleFldRec cdf1 =
    { I_COLOURDBOX_TITLE_DEFAULT, I_COLOURDBOX_TITLE_OTHER,
      I_COLOURDBOX_TITLE, I_COLOURDBOX_TITLEMAX,
      I_COLOURDBOX_TITLEMAX_ADJ_UP, I_COLOURDBOX_TITLEMAX_ADJ_DOWN,
      CD_FIND(title), CD_FIND(maxtitle) };
static FlagFldRec cdf2 =
    { I_COLOURDBOX_INCLUDENONE, COLOURDBOX_INCLUDENONEBUTTON, TRUE };
static FlagFldRec cdf3 =
    { I_COLOURDBOX_SELECTNONE, COLOURDBOX_SELECTNONEBUTTON, TRUE };
static FlagFldRec cdf4 =
    { I_COLOURDBOX_EVENT_BEFORE, COLOURDBOX_GENERATESHOWEVENT, TRUE };
static FlagFldRec cdf5 =
    { I_COLOURDBOX_EVENT_HIDDEN, COLOURDBOX_GENERATEHIDEEVENT, TRUE };

static FieldDefRec cdfields[] =
{
    { FLD_TITLE,            (FldDefPtr) &cdf1 },
    { FLD_FLAG,             (FldDefPtr) &cdf2 },
    { FLD_FLAG,             (FldDefPtr) &cdf3 },
    { FLD_FLAG,             (FldDefPtr) &cdf4 },
    { FLD_FLAG,             (FldDefPtr) &cdf5 },
    { FLD_END, NULL}
};

static TitleClickRec cda1 =
    { I_COLOURDBOX_TITLE_DEFAULT, I_COLOURDBOX_TITLE_OTHER,
      I_COLOURDBOX_TITLE, I_COLOURDBOX_TITLEMAX,
      I_COLOURDBOX_TITLEMAX_ADJ_UP, I_COLOURDBOX_TITLEMAX_ADJ_DOWN };
static SpecialClickRec cda2 = { object_cd_colour_popup };
static ToggleFadeClickRec cda3 = { I_COLOURDBOX_SELECTNONE };

static ClickDefRec cdclicks[] =
{
    { I_COLOURDBOX_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &cda1 },
    { I_COLOURDBOX_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &cda1 },
    { I_COLOURDBOX_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &cda1 },
    { I_COLOURDBOX_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &cda1 },
    { I_COLOURDBOX_COLOUR_POPUP,    ACT_SPECIAL,   (ClickParamsPtr) &cda2 },
    { I_COLOURDBOX_INCLUDENONE,  ACT_TOGGLEFADE,   (ClickParamsPtr) &cda3 },
                                 { 0, ACT_END }
};

static DropDefRec cddrops[] =
{
    {-2}
};


/* ---------------------------- dcs  definition -------------------------- */

#define  DC_FIND(field)   offsetof (DCSTemplateRec, field)

static RefDefRec dcrefs[] =
{
    { REF_MSG, DC_FIND(title), FALSE },
    { REF_MSG, DC_FIND(message), FALSE },
    { REF_STR, DC_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec dcf1 =
    { I_DCS_TITLE_DEFAULT, I_DCS_TITLE_OTHER,
      I_DCS_TITLE, I_DCS_TITLEMAX,
      I_DCS_TITLEMAX_ADJ_UP, I_DCS_TITLEMAX_ADJ_DOWN,
      DC_FIND(title), DC_FIND(maxtitle) };
static TitleFldRec dcf2 =
    { I_DCS_MESSAGE_DEFAULT, I_DCS_MESSAGE_OTHER,
      I_DCS_MESSAGE, I_DCS_MESSAGEMAX,
      I_DCS_MESSAGEMAX_ADJ_UP, I_DCS_MESSAGEMAX_ADJ_DOWN,
      DC_FIND(message), DC_FIND(maxmessage) };
static FlagFldRec dcf3 =
    { I_DCS_EVENT_BEFORE, DCS_GENERATEABOUTTOBESHOWN, TRUE };
static FlagFldRec dcf4 =
    { I_DCS_EVENT_HIDDEN, DCS_GENERATEDIALOGUECOMPLETED, TRUE };
static OptConstStrFldRec dcf5 =
    { I_DCS_HASWINDOW, I_DCS_WINDOW, DC_FIND(window) };

static FieldDefRec dcfields[] =
{
    { FLD_TITLE,            (FldDefPtr) &dcf1 },
    { FLD_TITLE,            (FldDefPtr) &dcf2 },
    { FLD_FLAG,             (FldDefPtr) &dcf3 },
    { FLD_FLAG,             (FldDefPtr) &dcf4 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &dcf5 },
    { FLD_END, NULL}
};

static TitleClickRec dca1 =
    { I_DCS_TITLE_DEFAULT, I_DCS_TITLE_OTHER,
      I_DCS_TITLE, I_DCS_TITLEMAX,
      I_DCS_TITLEMAX_ADJ_UP, I_DCS_TITLEMAX_ADJ_DOWN };
static TitleClickRec dca2 =
    { I_DCS_MESSAGE_DEFAULT, I_DCS_MESSAGE_OTHER,
      I_DCS_MESSAGE, I_DCS_MESSAGEMAX,
      I_DCS_MESSAGEMAX_ADJ_UP, I_DCS_MESSAGEMAX_ADJ_DOWN };
static ToggleFadeClickRec dca3 = { I_DCS_WINDOW };

static ClickDefRec dcclicks[] =
{
    { I_DCS_TITLE_DEFAULT,       ACT_TITLE,   (ClickParamsPtr) &dca1 },
    { I_DCS_TITLE_OTHER,         ACT_TITLE,   (ClickParamsPtr) &dca1 },
    { I_DCS_TITLEMAX_ADJ_UP,     ACT_TITLE,   (ClickParamsPtr) &dca1 },
    { I_DCS_TITLEMAX_ADJ_DOWN,   ACT_TITLE,   (ClickParamsPtr) &dca1 },
    { I_DCS_MESSAGE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &dca2 },
    { I_DCS_MESSAGE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &dca2 },
    { I_DCS_MESSAGEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &dca2 },
    { I_DCS_MESSAGEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &dca2 },
    { I_DCS_HASWINDOW,      ACT_TOGGLEFADE,   (ClickParamsPtr) &dca3 },
                          { 0, ACT_END }
};

static SetOptDropRec dcp1 = { I_DCS_WINDOW, I_DCS_HASWINDOW };

static DropDetailsRec dcd1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &dcp1 };

static DropDefRec dcdrops[] =
{
    { I_DCS_HASWINDOW,     &dcd1 },
    { I_DCS_WINDOW,        &dcd1 },
    {-2}
};


/* ------------------------- file info definition ------------------------ */

#define  FI_FIND(field)   offsetof (FileInfoTemplateRec, field)

static RefDefRec firefs[] =
{
    { REF_MSG, FI_FIND(title), FALSE },
    { REF_MSG, FI_FIND(filename), FALSE },
    { REF_STR, FI_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec fif1 =
    { I_FILEINFO_TITLE_DEFAULT, I_FILEINFO_TITLE_OTHER,
      I_FILEINFO_TITLE, I_FILEINFO_TITLEMAX,
      I_FILEINFO_TITLEMAX_ADJ_UP, I_FILEINFO_TITLEMAX_ADJ_DOWN,
      FI_FIND(title), FI_FIND(maxtitle) };
static OptConstStrFldRec fif2 =
    { I_FILEINFO_HASFILENAME, I_FILEINFO_FILENAME, FI_FIND(filename) };
static FiletypeFldRec fif3 =
    { I_FILEINFO_FILETYPE, FI_FIND(filetype) };
static FlagFldRec fif4 =
    { I_FILEINFO_EVENT_BEFORE, FILEINFO_GENERATESHOWEVENT, TRUE };
static FlagFldRec fif5 =
    { I_FILEINFO_EVENT_HIDDEN, FILEINFO_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec fif6 =
    { I_FILEINFO_HASWINDOW, I_FILEINFO_WINDOW, FI_FIND(window) };

static FieldDefRec fifields[] =
{
    { FLD_TITLE,            (FldDefPtr) &fif1 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fif2 },
    { FLD_FILETYPE,         (FldDefPtr) &fif3 },
    { FLD_FLAG,             (FldDefPtr) &fif4 },
    { FLD_FLAG,             (FldDefPtr) &fif5 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fif6 },
    { FLD_END, NULL}
};

static TitleClickRec fia1 =
    { I_FILEINFO_TITLE_DEFAULT, I_FILEINFO_TITLE_OTHER,
      I_FILEINFO_TITLE, I_FILEINFO_TITLEMAX,
      I_FILEINFO_TITLEMAX_ADJ_UP, I_FILEINFO_TITLEMAX_ADJ_DOWN };
static SpecialClickRec fia2 = { object_fi_filetype_popup };
static ToggleFadeClickRec fia3 = { I_FILEINFO_FILENAME };
static ToggleFadeClickRec fia4 = { I_FILEINFO_WINDOW };

static ClickDefRec ficlicks[] =
{
    { I_FILEINFO_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &fia1 },
    { I_FILEINFO_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &fia1 },
    { I_FILEINFO_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &fia1 },
    { I_FILEINFO_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &fia1 },
    { I_FILEINFO_FILETYPE_POPUP,  ACT_SPECIAL,   (ClickParamsPtr) &fia2 },
    { I_FILEINFO_HASFILENAME,  ACT_TOGGLEFADE,   (ClickParamsPtr) &fia3 },
    { I_FILEINFO_HASWINDOW,    ACT_TOGGLEFADE,   (ClickParamsPtr) &fia4 },
                               { 0, ACT_END }
};

static SetOptDropRec fip1 = { I_FILEINFO_WINDOW, I_FILEINFO_HASWINDOW };

static DropDetailsRec fid1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &fip1 };

static DropDefRec fidrops[] =
{
    { I_FILEINFO_HASWINDOW,     &fid1 },
    { I_FILEINFO_WINDOW,        &fid1 },
    {-2}
};


/* ------------------------- font dbox definition ------------------------ */

#define  FD_FIND(field)   offsetof (FontDboxTemplateRec, field)

static RefDefRec fdrefs[] =
{
    { REF_MSG, FD_FIND(title), FALSE },
    { REF_STR, FD_FIND(initialfont), FALSE },
    { REF_MSG, FD_FIND(trystring), FALSE },
    { REF_STR, FD_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec fdf1 =
    { I_FONTDBOX_TITLE_DEFAULT, I_FONTDBOX_TITLE_OTHER,
      I_FONTDBOX_TITLE, I_FONTDBOX_TITLEMAX,
      I_FONTDBOX_TITLEMAX_ADJ_UP, I_FONTDBOX_TITLEMAX_ADJ_DOWN,
      FD_FIND(title), FD_FIND(maxtitle) };
static OptConstStrFldRec fdf2 =
    { I_FONTDBOX_HASINITIAL, I_FONTDBOX_INITIAL, FD_FIND(initialfont) };
static IntegerFldRec fdf3 =
    { I_FONTDBOX_HEIGHT, FD_FIND(initialheight), FALSE };
static IntegerFldRec fdf4 =
    { I_FONTDBOX_ASPECT, FD_FIND(initialaspect), FALSE };
static OptConstStrFldRec fdf5 =
    { I_FONTDBOX_HASSAMPLE, I_FONTDBOX_SAMPLE, FD_FIND(trystring) };
static FlagFldRec fdf6 =
    { I_FONTDBOX_ALLOWSYSTEM, FONTDBOX_INCLUDESYSTEMFONT, TRUE };
static OptConstStrFldRec fdf7 =
    { I_FONTDBOX_HASWINDOW, I_FONTDBOX_WINDOW, FD_FIND(window) };
static FlagFldRec fdf8 =
    { I_FONTDBOX_EVENT_BEFORE, FONTDBOX_GENERATESHOWEVENT, TRUE };
static FlagFldRec fdf9 =
    { I_FONTDBOX_EVENT_HIDDEN, FONTDBOX_GENERATEHIDEEVENT, TRUE };

static FieldDefRec fdfields[] =
{
    { FLD_TITLE,            (FldDefPtr) &fdf1 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fdf2 },
    { FLD_INTEGER,          (FldDefPtr) &fdf3 },
    { FLD_INTEGER,          (FldDefPtr) &fdf4 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fdf5 },
    { FLD_FLAG,             (FldDefPtr) &fdf6 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fdf7 },
    { FLD_FLAG,             (FldDefPtr) &fdf8 },
    { FLD_FLAG,             (FldDefPtr) &fdf9 },
    { FLD_END, NULL}
};

static TitleClickRec fda1 =
    { I_FONTDBOX_TITLE_DEFAULT, I_FONTDBOX_TITLE_OTHER,
      I_FONTDBOX_TITLE, I_FONTDBOX_TITLEMAX,
      I_FONTDBOX_TITLEMAX_ADJ_UP, I_FONTDBOX_TITLEMAX_ADJ_DOWN };
static ToggleFadeClickRec fda2 = { I_FONTDBOX_INITIAL };
static ToggleFadeClickRec fda3 = { I_FONTDBOX_INITIAL_POPUP };
static SpecialClickRec fda4 = { object_fd_initial_popup };
static AdjustClickRec fda5 = { -1, I_FONTDBOX_HEIGHT, TRUE, 1, 10 };
static AdjustClickRec fda6 = { -1, I_FONTDBOX_HEIGHT, FALSE, 1, 10 };
static AdjustClickRec fda7 = { -1, I_FONTDBOX_ASPECT, TRUE, 1, 10 };
static AdjustClickRec fda8 = { -1, I_FONTDBOX_ASPECT, FALSE, 1, 10 };
static ToggleFadeClickRec fda9 = { I_FONTDBOX_SAMPLE };
static ToggleFadeClickRec fda10 = { I_FONTDBOX_WINDOW };
static SpecialClickRec fda11 = { object_fd_allowsystem };

static ClickDefRec fdclicks[] =
{
    { I_FONTDBOX_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &fda1 },
    { I_FONTDBOX_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &fda1 },
    { I_FONTDBOX_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &fda1 },
    { I_FONTDBOX_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &fda1 },
    { I_FONTDBOX_HASINITIAL,   ACT_TOGGLEFADE,   (ClickParamsPtr) &fda2 },
    { I_FONTDBOX_HASINITIAL,   ACT_TOGGLEFADE,   (ClickParamsPtr) &fda3 },
    { I_FONTDBOX_INITIAL_POPUP,   ACT_SPECIAL,   (ClickParamsPtr) &fda4 },
    { I_FONTDBOX_HEIGHT_ADJ_UP,    ACT_ADJUST,   (ClickParamsPtr) &fda5 },
    { I_FONTDBOX_HEIGHT_ADJ_DOWN,  ACT_ADJUST,   (ClickParamsPtr) &fda6 },
    { I_FONTDBOX_ASPECT_ADJ_UP,    ACT_ADJUST,   (ClickParamsPtr) &fda7 },
    { I_FONTDBOX_ASPECT_ADJ_DOWN,  ACT_ADJUST,   (ClickParamsPtr) &fda8 },
    { I_FONTDBOX_HASSAMPLE,    ACT_TOGGLEFADE,   (ClickParamsPtr) &fda9 },
    { I_FONTDBOX_HASWINDOW,    ACT_TOGGLEFADE,   (ClickParamsPtr) &fda10},
    { I_FONTDBOX_ALLOWSYSTEM,     ACT_SPECIAL,   (ClickParamsPtr) &fda11 },
                                 { 0, ACT_END }
};

static SetOptDropRec fdp1 = { I_FONTDBOX_WINDOW, I_FONTDBOX_HASWINDOW };

static DropDetailsRec fdd1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &fdp1 };

static DropDefRec fddrops[] =
{
    { I_FONTDBOX_HASWINDOW,     &fdd1 },
    { I_FONTDBOX_WINDOW,        &fdd1 },
    {-2}
};


/* ------------------------- font menu definition ------------------------ */

#define  FM_FIND(field)   offsetof (FontMenuTemplateRec, field)

static RefDefRec fmrefs[] =
{
    { REF_STR, FM_FIND(tickedfont), FALSE },
    { REF_END }
};

static OptConstStrFldRec fmf1 =
    { I_FONTMENU_HASINITIAL, I_FONTMENU_INITIAL, FM_FIND(tickedfont) };
static FlagFldRec fmf2 =
    { I_FONTMENU_ALLOWSYSTEM, FONTMENU_SYSTEMFONT, TRUE };
static FlagFldRec fmf3 =
    { I_FONTMENU_EVENT_BEFORE, FONTMENU_GENERATESHOWEVENT, TRUE };
static FlagFldRec fmf4 =
    { I_FONTMENU_EVENT_HIDDEN, FONTMENU_GENERATEHIDEEVENT, TRUE };

static FieldDefRec fmfields[] =
{
    { FLD_OPT_CONST_STR,    (FldDefPtr) &fmf1 },
    { FLD_FLAG,             (FldDefPtr) &fmf2 },
    { FLD_FLAG,             (FldDefPtr) &fmf3 },
    { FLD_FLAG,             (FldDefPtr) &fmf4 },
    { FLD_END, NULL}
};

static ToggleFadeClickRec fma1 = { I_FONTMENU_INITIAL };
static ToggleFadeClickRec fma2 = { I_FONTMENU_INITIAL_POPUP };
static SpecialClickRec fma3 = { object_fm_ticked_popup };
static SpecialClickRec fma4 = { object_fm_allowsystem };

static ClickDefRec fmclicks[] =
{
    { I_FONTMENU_HASINITIAL,   ACT_TOGGLEFADE,   (ClickParamsPtr) &fma1 },
    { I_FONTMENU_HASINITIAL,   ACT_TOGGLEFADE,   (ClickParamsPtr) &fma2 },
    { I_FONTMENU_INITIAL_POPUP,   ACT_SPECIAL,   (ClickParamsPtr) &fma3 },
    { I_FONTMENU_ALLOWSYSTEM,     ACT_SPECIAL,   (ClickParamsPtr) &fma4 },
                                 { 0, ACT_END }
};

static DropDefRec fmdrops[] =
{
    {-2}
};


/* ------------------------ iconbar icon definition ---------------------- */

#define  IB_FIND(field)   offsetof (IconbarTemplateRec, field)

static RefDefRec ibrefs[] =
{
    { REF_STR, IB_FIND(spritename), FALSE },
    { REF_MSG, IB_FIND(text), FALSE },
    { REF_STR, IB_FIND(menu), FALSE },
    { REF_STR, IB_FIND(selectshow), FALSE },
    { REF_STR, IB_FIND(adjustshow), FALSE },
    { REF_MSG, IB_FIND(helpmessage), FALSE },
    { REF_END }
};

static IntegerFldRec ibf1 =
    { I_ICONBAR_POSITION, IB_FIND(position), FALSE };
static IntegerFldRec ibf2 =
    { I_ICONBAR_PRIORITY, IB_FIND(priority), FALSE };
static OptAssStrFldRec ibf3 =
    { I_ICONBAR_HASSPRITE, I_ICONBAR_SPRITE, I_ICONBAR_SPRITEMAX,
      I_ICONBAR_SPRITEMAX_ADJ_UP, I_ICONBAR_SPRITEMAX_ADJ_DOWN,
      IB_FIND(spritename), IB_FIND(maxsprite) };
static OptAssStrFldRec ibf4 =
    { I_ICONBAR_HASTEXT, I_ICONBAR_TEXT, I_ICONBAR_TEXTMAX,
      I_ICONBAR_TEXTMAX_ADJ_UP, I_ICONBAR_TEXTMAX_ADJ_DOWN,
      IB_FIND(text), IB_FIND(maxtextlen) };
static OptEventFldRec ibf5 =
    { I_ICONBAR_SELECT_EVENT_DFLT, I_ICONBAR_SELECT_EVENT_OTHER,
      I_ICONBAR_SELECT_EVENT_NONE, I_ICONBAR_SELECT_EVENT,
      IB_FIND(selectevent), ICONBAR_GENERATESELECTCLICKEDEVENT };
static OptConstStrFldRec ibf6 =
    { I_ICONBAR_SELECT_SHOW_OBJECT, I_ICONBAR_SELECT_OBJECT,
      IB_FIND(selectshow) };
static FlagFldRec ibf7 =
    { I_ICONBAR_SELECT_TRANSIENT, ICONBAR_SHOWSELECTTRANSIENT, TRUE };
static FlagFldRec ibf8 =
    { I_ICONBAR_SELECT_EVENT_BEFORE,
      ICONBAR_GENERATESELECTABOUTTOBESHOWN, TRUE };
static OptEventFldRec ibf9 =
    { I_ICONBAR_ADJUST_EVENT_DFLT, I_ICONBAR_ADJUST_EVENT_OTHER,
      I_ICONBAR_ADJUST_EVENT_NONE, I_ICONBAR_ADJUST_EVENT,
      IB_FIND(adjustevent), ICONBAR_GENERATEADJUSTCLICKEDEVENT };
static OptConstStrFldRec ibf10 =
    { I_ICONBAR_ADJUST_SHOW_OBJECT, I_ICONBAR_ADJUST_OBJECT,
      IB_FIND(adjustshow) };
static FlagFldRec ibf11 =
    { I_ICONBAR_ADJUST_TRANSIENT, ICONBAR_SHOWADJUSTTRANSIENT, TRUE };
static FlagFldRec ibf12 =
    { I_ICONBAR_ADJUST_EVENT_BEFORE,
      ICONBAR_GENERATEADJUSTABOUTTOBESHOWN, TRUE };
static OptConstStrFldRec ibf13 =
    { I_ICONBAR_HASMENU, I_ICONBAR_MENU, IB_FIND(menu) };
static OptAssStrFldRec ibf14 =
    { I_ICONBAR_HASHELP, I_ICONBAR_HELP, I_ICONBAR_HELPMAX,
      I_ICONBAR_HELPMAX_ADJ_UP, I_ICONBAR_HELPMAX_ADJ_DOWN,
      IB_FIND(helpmessage), IB_FIND(maxhelp) };

static FieldDefRec ibfields[] =
{
    { FLD_INTEGER,          (FldDefPtr) &ibf1 },
    { FLD_INTEGER,          (FldDefPtr) &ibf2 },
    { FLD_OPT_ASS_STR,      (FldDefPtr) &ibf3 },
    { FLD_OPT_ASS_STR,      (FldDefPtr) &ibf4 },
    { FLD_OPT_EVENT,        (FldDefPtr) &ibf5 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &ibf6 },
    { FLD_FLAG,             (FldDefPtr) &ibf7 },
    { FLD_FLAG,             (FldDefPtr) &ibf8 },
    { FLD_OPT_EVENT,        (FldDefPtr) &ibf9 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &ibf10 },
    { FLD_FLAG,             (FldDefPtr) &ibf11 },
    { FLD_FLAG,             (FldDefPtr) &ibf12 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &ibf13 },
    { FLD_OPT_ASS_STR,      (FldDefPtr) &ibf14 },
    { FLD_END, NULL}
};

static SpecialClickRec iba1 = { object_ib_position_popup };
static AdjustClickRec iba2 = { -1, I_ICONBAR_PRIORITY, TRUE, 1, 10 };
static AdjustClickRec iba3 = { -1, I_ICONBAR_PRIORITY, FALSE, 1, 10 };
static ToggleFadeClickRec iba4 = { I_ICONBAR_SPRITE };
static AdjustClickRec iba5 =
    { I_ICONBAR_SPRITE, I_ICONBAR_SPRITEMAX, TRUE, 1, 10 };
static AdjustClickRec iba6 =
    { I_ICONBAR_SPRITE, I_ICONBAR_SPRITEMAX, FALSE, 1, 10 };
static ToggleFadeClickRec iba7 = { I_ICONBAR_TEXT };
static AdjustClickRec iba8 =
    { I_ICONBAR_TEXT, I_ICONBAR_TEXTMAX, TRUE, 1, 10 };
static AdjustClickRec iba9 =
    { I_ICONBAR_TEXT, I_ICONBAR_TEXTMAX, FALSE, 1, 10 };
static FadeClickRec iba10 = { I_ICONBAR_SELECT_EVENT };
static ToggleFadeClickRec iba11 = { I_ICONBAR_SELECT_OBJECT };
static ToggleFadeClickRec iba12 = { I_ICONBAR_SELECT_TRANSIENT };
static ToggleFadeClickRec iba13 = { I_ICONBAR_SELECT_EVENT_BEFORE };
static FadeClickRec iba14 = { I_ICONBAR_ADJUST_EVENT };
static ToggleFadeClickRec iba15 = { I_ICONBAR_ADJUST_OBJECT };
static ToggleFadeClickRec iba16 = { I_ICONBAR_ADJUST_TRANSIENT };
static ToggleFadeClickRec iba17 = { I_ICONBAR_ADJUST_EVENT_BEFORE };
static ToggleFadeClickRec iba18 = { I_ICONBAR_MENU };
static ToggleFadeClickRec iba19 = { I_ICONBAR_HELP };
static AdjustClickRec iba20 =
    { I_ICONBAR_HELP, I_ICONBAR_HELPMAX, TRUE, 1, 10 };
static AdjustClickRec iba21 =
    { I_ICONBAR_HELP, I_ICONBAR_HELPMAX, FALSE, 1, 10 };

static ClickDefRec ibclicks[] =
{
    { I_ICONBAR_POSITION_POPUP,    ACT_SPECIAL,     (ClickParamsPtr) &iba1 },
    { I_ICONBAR_PRIORITY_ADJ_UP,    ACT_ADJUST,     (ClickParamsPtr) &iba2 },
    { I_ICONBAR_PRIORITY_ADJ_DOWN,  ACT_ADJUST,     (ClickParamsPtr) &iba3 },
    { I_ICONBAR_HASSPRITE,          ACT_TOGGLEFADE, (ClickParamsPtr) &iba4 },
    { I_ICONBAR_SPRITEMAX_ADJ_UP,   ACT_ADJUST,     (ClickParamsPtr) &iba5 },
    { I_ICONBAR_SPRITEMAX_ADJ_DOWN, ACT_ADJUST,     (ClickParamsPtr) &iba6 },
    { I_ICONBAR_HASTEXT,            ACT_TOGGLEFADE, (ClickParamsPtr) &iba7 },
    { I_ICONBAR_TEXTMAX_ADJ_UP,     ACT_ADJUST,     (ClickParamsPtr) &iba8 },
    { I_ICONBAR_TEXTMAX_ADJ_DOWN,   ACT_ADJUST,     (ClickParamsPtr) &iba9 },
    { I_ICONBAR_SELECT_EVENT_DFLT,    ACT_FADE,     (ClickParamsPtr) &iba10},
    { I_ICONBAR_SELECT_EVENT_NONE,    ACT_FADE,     (ClickParamsPtr) &iba10},
    { I_ICONBAR_SELECT_EVENT_OTHER, ACT_UNFADE,     (ClickParamsPtr) &iba10},
    { I_ICONBAR_SELECT_EVENT_DFLT,   ACT_RADIO},
    { I_ICONBAR_SELECT_EVENT_NONE,   ACT_RADIO},
    { I_ICONBAR_SELECT_EVENT_OTHER,  ACT_RADIO},
    { I_ICONBAR_SELECT_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba11},
    { I_ICONBAR_SELECT_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba12},
    { I_ICONBAR_SELECT_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba13},
    { I_ICONBAR_ADJUST_EVENT_DFLT,    ACT_FADE,     (ClickParamsPtr) &iba14},
    { I_ICONBAR_ADJUST_EVENT_NONE,    ACT_FADE,     (ClickParamsPtr) &iba14},
    { I_ICONBAR_ADJUST_EVENT_OTHER, ACT_UNFADE,     (ClickParamsPtr) &iba14},
    { I_ICONBAR_ADJUST_EVENT_DFLT,   ACT_RADIO},
    { I_ICONBAR_ADJUST_EVENT_NONE,   ACT_RADIO},
    { I_ICONBAR_ADJUST_EVENT_OTHER,  ACT_RADIO},
    { I_ICONBAR_ADJUST_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba15},
    { I_ICONBAR_ADJUST_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba16},
    { I_ICONBAR_ADJUST_SHOW_OBJECT, ACT_TOGGLEFADE, (ClickParamsPtr) &iba17},
    { I_ICONBAR_HASMENU,            ACT_TOGGLEFADE, (ClickParamsPtr) &iba18},
    { I_ICONBAR_HASHELP,            ACT_TOGGLEFADE, (ClickParamsPtr) &iba19},
    { I_ICONBAR_HELPMAX_ADJ_UP,     ACT_ADJUST,     (ClickParamsPtr) &iba20},
    { I_ICONBAR_HELPMAX_ADJ_DOWN,   ACT_ADJUST,     (ClickParamsPtr) &iba21},
                                 { 0, ACT_END }
};

static SetOpt3DropRec ibp1 =
    { I_ICONBAR_SELECT_OBJECT, I_ICONBAR_SELECT_SHOW_OBJECT,
      I_ICONBAR_SELECT_TRANSIENT, I_ICONBAR_SELECT_EVENT_BEFORE };
static SetOpt3DropRec ibp2 =
    { I_ICONBAR_ADJUST_OBJECT, I_ICONBAR_ADJUST_SHOW_OBJECT,
      I_ICONBAR_ADJUST_TRANSIENT, I_ICONBAR_ADJUST_EVENT_BEFORE };
static SetOptDropRec ibp3 = { I_ICONBAR_MENU, I_ICONBAR_HASMENU };

static DropDetailsRec ibd1 =
    { OBJECT_DROP, -1, DROP_SETOPT3, (DropParamsPtr) &ibp1 };
static DropDetailsRec ibd2 =
    { OBJECT_DROP, -1, DROP_SETOPT3, (DropParamsPtr) &ibp2 };
static DropDetailsRec ibd3 =
    { OBJECT_DROP, -1, DROP_SETOPT, (DropParamsPtr) &ibp3 };

static DropDefRec ibdrops[] =
{
    { I_ICONBAR_SELECT_SHOW_OBJECT,    &ibd1 },
    { I_ICONBAR_SELECT_OBJECT,         &ibd1 },
    { I_ICONBAR_ADJUST_SHOW_OBJECT,    &ibd2 },
    { I_ICONBAR_ADJUST_OBJECT,         &ibd2 },
    { I_ICONBAR_HASMENU,               &ibd3 },
    { I_ICONBAR_MENU,                  &ibd3 },
    { I_ICONBAR_SHOWMENU,              &ibd3 },
    {-2}
};


/* ------------------------- print dbox definition ----------------------- */

#define  PD_FIND(field)   offsetof (PrintDboxTemplateRec, field)

static RefDefRec pdrefs[] =
{
    { REF_STR, PD_FIND(furtheroptions), TRUE },
    { REF_STR, PD_FIND(window), FALSE },
    { REF_END }
};

static FlagFldRec pdf1 =
    { I_PRINTDBOX_HASCOPIES, PRINTDBOX_INCLUDECOPIES, TRUE };
static IntegerFldRec pdf2 =
    { I_PRINTDBOX_COPIES, PD_FIND(copies), FALSE };
static FlagFldRec pdf3 =
    { I_PRINTDBOX_HASSCALE, PRINTDBOX_INCLUDESCALE, TRUE };
static IntegerFldRec pdf4 =
    { I_PRINTDBOX_SCALE, PD_FIND(scale), FALSE };
static FlagFldRec pdf5 =
    { I_PRINTDBOX_HASPAGERANGE, PRINTDBOX_INCLUDEALLFROMTO, TRUE };
static FlagFldRec pdf6 =
    { I_PRINTDBOX_ALL, PRINTDBOX_SELECTFROMTO, FALSE };
static FlagFldRec pdf7 =
    { I_PRINTDBOX_RANGE, PRINTDBOX_SELECTFROMTO, TRUE };
static IntegerFldRec pdf8 =
    { I_PRINTDBOX_FIRST, PD_FIND(from), FALSE };
static IntegerFldRec pdf9 =
    { I_PRINTDBOX_LAST, PD_FIND(to), FALSE };
static FlagFldRec pdf10 =
    { I_PRINTDBOX_HASORIENTATION, PRINTDBOX_INCLUDEORIENTATION, TRUE };
static FlagFldRec pdf11 =
    { I_PRINTDBOX_UPRIGHT, PRINTDBOX_SELECTSIDEWAYS, FALSE };
static FlagFldRec pdf12 =
    { I_PRINTDBOX_SIDEWAYS, PRINTDBOX_SELECTSIDEWAYS, TRUE };
static FlagFldRec pdf13 =
    { I_PRINTDBOX_HASDRAFT, PRINTDBOX_INCLUDEDRAFT, TRUE };
static FlagFldRec pdf14 =
    { I_PRINTDBOX_ON, PRINTDBOX_SELECTDRAFT, TRUE };
static FlagFldRec pdf15 =
    { I_PRINTDBOX_OFF, PRINTDBOX_SELECTDRAFT, FALSE };
static FlagFldRec pdf16 =
    { I_PRINTDBOX_HASSETUP, PRINTDBOX_INCLUDESETUP, TRUE };
static MandConstStrFldRec pdf17 =
    { I_PRINTDBOX_SETUP, PD_FIND(furtheroptions) };
static FlagFldRec pdf18 =
    { I_PRINTDBOX_SETUP_EVENT_BEFORE, PRINTDBOX_GENERATESETUPEVENT, TRUE };
static FlagFldRec pdf19 =
    { I_PRINTDBOX_HASSAVE, PRINTDBOX_INCLUDESAVE, TRUE };
static FlagFldRec pdf20 =
    { I_PRINTDBOX_EVENT_BEFORE, PRINTDBOX_GENERATESHOWEVENT, TRUE };
static FlagFldRec pdf21 =
    { I_PRINTDBOX_EVENT_HIDDEN, PRINTDBOX_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec pdf22 =
    { I_PRINTDBOX_HASWINDOW, I_PRINTDBOX_WINDOW, PD_FIND(window) };

static FieldDefRec pdfields[] =
{
    { FLD_FLAG,             (FldDefPtr) &pdf1 },
    { FLD_INTEGER,          (FldDefPtr) &pdf2 },
    { FLD_FLAG,             (FldDefPtr) &pdf3 },
    { FLD_INTEGER,          (FldDefPtr) &pdf4 },
    { FLD_FLAG,             (FldDefPtr) &pdf5 },
    { FLD_FLAG,             (FldDefPtr) &pdf6 },
    { FLD_FLAG,             (FldDefPtr) &pdf7 },
    { FLD_INTEGER,          (FldDefPtr) &pdf8 },
    { FLD_INTEGER,          (FldDefPtr) &pdf9 },
    { FLD_FLAG,             (FldDefPtr) &pdf10 },
    { FLD_FLAG,             (FldDefPtr) &pdf11 },
    { FLD_FLAG,             (FldDefPtr) &pdf12 },
    { FLD_FLAG,             (FldDefPtr) &pdf13 },
    { FLD_FLAG,             (FldDefPtr) &pdf14 },
    { FLD_FLAG,             (FldDefPtr) &pdf15 },
    { FLD_FLAG,             (FldDefPtr) &pdf16 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &pdf17 },
    { FLD_FLAG,             (FldDefPtr) &pdf18 },
    { FLD_FLAG,             (FldDefPtr) &pdf19 },
    { FLD_FLAG,             (FldDefPtr) &pdf20 },
    { FLD_FLAG,             (FldDefPtr) &pdf21 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &pdf22 },
    { FLD_END, NULL}
};

static ToggleFadeClickRec pda1 = { I_PRINTDBOX_COPIES };
static ToggleFadeClickRec pda2 = { I_PRINTDBOX_SCALE };
static SpecialClickRec pda3 = { object_pd_pagerange };
/* the order of the next two items is important - because the caret will be
   left in the *last* one when the RANGE option is selected */
static FadeClickRec pda4 = { I_PRINTDBOX_LAST };
static FadeClickRec pda5 = { I_PRINTDBOX_FIRST };
static ToggleFadeClickRec pda6 = { I_PRINTDBOX_UPRIGHT };
static ToggleFadeClickRec pda7 = { I_PRINTDBOX_SIDEWAYS };
static ToggleFadeClickRec pda8 = { I_PRINTDBOX_ON };
static ToggleFadeClickRec pda9 = { I_PRINTDBOX_OFF };
static ToggleFadeClickRec pda10 = { I_PRINTDBOX_SETUP };
static ToggleFadeClickRec pda11 = { I_PRINTDBOX_SETUP_EVENT_BEFORE };
static ToggleFadeClickRec pda12 = { I_PRINTDBOX_WINDOW };

static ClickDefRec pdclicks[] =
{
    { I_PRINTDBOX_HASCOPIES,      ACT_TOGGLEFADE,   (ClickParamsPtr) &pda1 },
    { I_PRINTDBOX_HASSCALE,       ACT_TOGGLEFADE,   (ClickParamsPtr) &pda2 },
    { I_PRINTDBOX_HASPAGERANGE,   ACT_SPECIAL,      (ClickParamsPtr) &pda3 },
    { I_PRINTDBOX_ALL,            ACT_RADIO },
    { I_PRINTDBOX_RANGE,          ACT_RADIO },
    { I_PRINTDBOX_RANGE,          ACT_UNFADE,       (ClickParamsPtr) &pda4 },
    { I_PRINTDBOX_RANGE,          ACT_UNFADE,       (ClickParamsPtr) &pda5 },
    { I_PRINTDBOX_ALL,            ACT_FADE,         (ClickParamsPtr) &pda4 },
    { I_PRINTDBOX_ALL,            ACT_FADE,         (ClickParamsPtr) &pda5 },
    { I_PRINTDBOX_HASORIENTATION, ACT_TOGGLEFADE,   (ClickParamsPtr) &pda6 },
    { I_PRINTDBOX_HASORIENTATION, ACT_TOGGLEFADE,   (ClickParamsPtr) &pda7 },
    { I_PRINTDBOX_UPRIGHT,        ACT_RADIO },
    { I_PRINTDBOX_SIDEWAYS,       ACT_RADIO },
    { I_PRINTDBOX_HASDRAFT,       ACT_TOGGLEFADE,   (ClickParamsPtr) &pda8 },
    { I_PRINTDBOX_HASDRAFT,       ACT_TOGGLEFADE,   (ClickParamsPtr) &pda9 },
    { I_PRINTDBOX_ON,             ACT_RADIO },
    { I_PRINTDBOX_OFF,            ACT_RADIO },
    { I_PRINTDBOX_HASSETUP,       ACT_TOGGLEFADE,   (ClickParamsPtr) &pda10},
    { I_PRINTDBOX_HASSETUP,       ACT_TOGGLEFADE,   (ClickParamsPtr) &pda11},
    { I_PRINTDBOX_HASWINDOW,      ACT_TOGGLEFADE,   (ClickParamsPtr) &pda12},
                                 { 0, ACT_END }
};

static SetOptDropRec pdp1 = { I_PRINTDBOX_WINDOW, I_PRINTDBOX_HASWINDOW };
static SetOpt2DropRec pdp2 = { I_PRINTDBOX_SETUP, I_PRINTDBOX_HASSETUP,
                               I_PRINTDBOX_SETUP_EVENT_BEFORE };

static DropDetailsRec pdd1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &pdp1 };
static DropDetailsRec pdd2 =
    { OBJECT_DROP, -1, DROP_SETOPT2,(DropParamsPtr) &pdp2 };

static DropDefRec pddrops[] =
{
    { I_PRINTDBOX_HASWINDOW,     &pdd1 },
    { I_PRINTDBOX_WINDOW,        &pdd1 },
    { I_PRINTDBOX_HASSETUP,      &pdd2 },
    { I_PRINTDBOX_SETUP,         &pdd2 },
    { I_PRINTDBOX_SHOWSETUP,     &pdd2 },
    {-2}
};


/* ------------------------- prog info definition ------------------------ */

#define  PI_FIND(field)   offsetof (ProgInfoTemplateRec, field)

static RefDefRec pirefs[] =
{
    { REF_MSG, PI_FIND(title), FALSE },
    { REF_MSG, PI_FIND(purpose), TRUE },
    { REF_MSG, PI_FIND(author), TRUE },
    { REF_MSG, PI_FIND(version), TRUE },
    { REF_STR, PI_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec pif1 =
    { I_PROGINFO_TITLE_DEFAULT, I_PROGINFO_TITLE_OTHER,
      I_PROGINFO_TITLE, I_PROGINFO_TITLEMAX,
      I_PROGINFO_TITLEMAX_ADJ_UP, I_PROGINFO_TITLEMAX_ADJ_DOWN,
      PI_FIND(title), PI_FIND(maxtitle) };
static MandConstStrFldRec pif2 = { I_PROGINFO_PURPOSE, PI_FIND(purpose) };
static MandConstStrFldRec pif3 = { I_PROGINFO_AUTHOR, PI_FIND(author) };
static MandConstStrFldRec pif4 = { I_PROGINFO_VERSION, PI_FIND(version) };
static FlagFldRec pif5 =
    { I_PROGINFO_HASLICENCE, PROGINFO_INCLUDELICENCETYPE, TRUE };
static FlagFldRec pif6 =
    { I_PROGINFO_EVENT_BEFORE, PROGINFO_GENERATESHOWEVENT, TRUE };
static FlagFldRec pif7 =
    { I_PROGINFO_EVENT_HIDDEN, PROGINFO_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec pif8 =
    { I_PROGINFO_HASWINDOW, I_PROGINFO_WINDOW, PI_FIND(window) };

static FieldDefRec pifields[] =
{
    { FLD_TITLE,            (FldDefPtr) &pif1 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &pif2 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &pif3 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &pif4 },
    { FLD_FLAG,             (FldDefPtr) &pif5 },
    { FLD_FLAG,             (FldDefPtr) &pif6 },
    { FLD_FLAG,             (FldDefPtr) &pif7 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &pif8 },
    { FLD_END, NULL}
};

static TitleClickRec pia1 =
    { I_PROGINFO_TITLE_DEFAULT, I_PROGINFO_TITLE_OTHER,
      I_PROGINFO_TITLE, I_PROGINFO_TITLEMAX,
      I_PROGINFO_TITLEMAX_ADJ_UP, I_PROGINFO_TITLEMAX_ADJ_DOWN };
static ToggleFadeClickRec pia2 = { I_PROGINFO_LICENCE };
static ToggleFadeClickRec pia3 = { I_PROGINFO_LICENCE_POPUP };
static SpecialClickRec pia4 = { object_pi_licence_popup };
static ToggleFadeClickRec pia5 = { I_PROGINFO_WINDOW };

static ClickDefRec piclicks[] =
{
    { I_PROGINFO_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &pia1 },
    { I_PROGINFO_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &pia1 },
    { I_PROGINFO_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &pia1 },
    { I_PROGINFO_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &pia1 },
    { I_PROGINFO_HASLICENCE,   ACT_TOGGLEFADE,   (ClickParamsPtr) &pia2 },
    { I_PROGINFO_HASLICENCE,   ACT_TOGGLEFADE,   (ClickParamsPtr) &pia3 },
    { I_PROGINFO_LICENCE_POPUP,   ACT_SPECIAL,   (ClickParamsPtr) &pia4 },
    { I_PROGINFO_HASWINDOW,    ACT_TOGGLEFADE,   (ClickParamsPtr) &pia5 },
                               { 0, ACT_END }
};

static SetOptDropRec pip1 = { I_PROGINFO_WINDOW, I_PROGINFO_HASWINDOW };

static DropDetailsRec pid1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &pip1 };

static DropDefRec pidrops[] =
{
    { I_PROGINFO_HASWINDOW,     &pid1 },
    { I_PROGINFO_WINDOW,        &pid1 },
    {-2}
};


/* ---------------------------- quit definition -------------------------- */

#define  QU_FIND(field)   offsetof (QuitTemplateRec, field)

static RefDefRec qurefs[] =
{
    { REF_MSG, QU_FIND(title), FALSE },
    { REF_MSG, QU_FIND(message), FALSE },
    { REF_STR, QU_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec quf1 =
    { I_QUIT_TITLE_DEFAULT, I_QUIT_TITLE_OTHER,
      I_QUIT_TITLE, I_QUIT_TITLEMAX,
      I_QUIT_TITLEMAX_ADJ_UP, I_QUIT_TITLEMAX_ADJ_DOWN,
      QU_FIND(title), QU_FIND(maxtitle) };
static TitleFldRec quf2 =
    { I_QUIT_MESSAGE_DEFAULT, I_QUIT_MESSAGE_OTHER,
      I_QUIT_MESSAGE, I_QUIT_MESSAGEMAX,
      I_QUIT_MESSAGEMAX_ADJ_UP, I_QUIT_MESSAGEMAX_ADJ_DOWN,
      QU_FIND(message), QU_FIND(maxmessage) };
static FlagFldRec quf3 =
    { I_QUIT_EVENT_BEFORE, QUIT_GENERATESHOWEVENT, TRUE };
static FlagFldRec quf4 =
    { I_QUIT_EVENT_HIDDEN, QUIT_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec quf5 =
    { I_QUIT_HASWINDOW, I_QUIT_WINDOW, QU_FIND(window) };

static FieldDefRec qufields[] =
{
    { FLD_TITLE,            (FldDefPtr) &quf1 },
    { FLD_TITLE,            (FldDefPtr) &quf2 },
    { FLD_FLAG,             (FldDefPtr) &quf3 },
    { FLD_FLAG,             (FldDefPtr) &quf4 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &quf5 },
    { FLD_END, NULL}
};

static TitleClickRec qua1 =
    { I_QUIT_TITLE_DEFAULT, I_QUIT_TITLE_OTHER,
      I_QUIT_TITLE, I_QUIT_TITLEMAX,
      I_QUIT_TITLEMAX_ADJ_UP, I_QUIT_TITLEMAX_ADJ_DOWN };
static TitleClickRec qua2 =
    { I_QUIT_MESSAGE_DEFAULT, I_QUIT_MESSAGE_OTHER,
      I_QUIT_MESSAGE, I_QUIT_MESSAGEMAX,
      I_QUIT_MESSAGEMAX_ADJ_UP, I_QUIT_MESSAGEMAX_ADJ_DOWN };
static ToggleFadeClickRec qua3 = { I_QUIT_WINDOW };

static ClickDefRec quclicks[] =
{
    { I_QUIT_TITLE_DEFAULT,       ACT_TITLE,   (ClickParamsPtr) &qua1 },
    { I_QUIT_TITLE_OTHER,         ACT_TITLE,   (ClickParamsPtr) &qua1 },
    { I_QUIT_TITLEMAX_ADJ_UP,     ACT_TITLE,   (ClickParamsPtr) &qua1 },
    { I_QUIT_TITLEMAX_ADJ_DOWN,   ACT_TITLE,   (ClickParamsPtr) &qua1 },
    { I_QUIT_MESSAGE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &qua2 },
    { I_QUIT_MESSAGE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &qua2 },
    { I_QUIT_MESSAGEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &qua2 },
    { I_QUIT_MESSAGEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &qua2 },
    { I_QUIT_HASWINDOW,      ACT_TOGGLEFADE,   (ClickParamsPtr) &qua3 },
                             { 0, ACT_END }
};

static SetOptDropRec qup1 = { I_QUIT_WINDOW, I_QUIT_HASWINDOW };

static DropDetailsRec qud1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &qup1 };

static DropDefRec qudrops[] =
{
    { I_QUIT_HASWINDOW,     &qud1 },
    { I_QUIT_WINDOW,        &qud1 },
    {-2}
};


/* --------------------------- saveas definition ------------------------- */

#define  SA_FIND(field)   offsetof (SaveAsTemplateRec, field)

static RefDefRec sarefs[] =
{
    { REF_MSG, SA_FIND(title), TRUE },
    { REF_MSG, SA_FIND(filename), FALSE },
    { REF_STR, SA_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec saf1 =
    { I_SAVEAS_TITLE_DEFAULT, I_SAVEAS_TITLE_OTHER,
      I_SAVEAS_TITLE, I_SAVEAS_TITLEMAX,
      I_SAVEAS_TITLEMAX_ADJ_UP, I_SAVEAS_TITLEMAX_ADJ_DOWN,
      SA_FIND(title), SA_FIND(maxtitle) };
static MandConstStrFldRec saf2 = { I_SAVEAS_FILENAME, SA_FIND(filename) };
static FiletypeFldRec saf3 =
    { I_SAVEAS_FILETYPE, SA_FIND(filetype) };
static FlagFldRec saf4 =
    { I_SAVEAS_HASSELECTION, SAVEAS_EXCLUDESELECTIONBUTTON, FALSE };
static FlagFldRec saf5 =
    { I_SAVEAS_CLIENT, SAVEAS_AUTOMATICRAMTRANSFER, FALSE };
static FlagFldRec saf6 =
    { I_SAVEAS_RAM, SAVEAS_CLIENTSUPPORTSRAMTRANSFER, TRUE };
static FlagFldRec saf7 =
    { I_SAVEAS_EVENT_BEFORE, SAVEAS_GENERATESHOWEVENT, TRUE };
static FlagFldRec saf8 =
    { I_SAVEAS_EVENT_HIDDEN, SAVEAS_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec saf9 =
    { I_SAVEAS_HASWINDOW, I_SAVEAS_WINDOW, SA_FIND(window) };

static FieldDefRec safields[] =
{
    { FLD_TITLE,            (FldDefPtr) &saf1 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &saf2 },
    { FLD_FILETYPE,         (FldDefPtr) &saf3 },
    { FLD_FLAG,             (FldDefPtr) &saf4 },
    { FLD_FLAG,             (FldDefPtr) &saf5 },
    { FLD_FLAG,             (FldDefPtr) &saf6 },
    { FLD_FLAG,             (FldDefPtr) &saf7 },
    { FLD_FLAG,             (FldDefPtr) &saf8 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &saf9 },
    { FLD_END, NULL}
};

static TitleClickRec saa1 =
    { I_SAVEAS_TITLE_DEFAULT, I_SAVEAS_TITLE_OTHER,
      I_SAVEAS_TITLE, I_SAVEAS_TITLEMAX,
      I_SAVEAS_TITLEMAX_ADJ_UP, I_SAVEAS_TITLEMAX_ADJ_DOWN };
static SpecialClickRec saa2 = { object_sa_filetype_popup };
static ToggleFadeClickRec saa3 = { I_SAVEAS_RAM };
static ToggleFadeClickRec saa4 = { I_SAVEAS_WINDOW };

static ClickDefRec saclicks[] =
{
    { I_SAVEAS_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &saa1 },
    { I_SAVEAS_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &saa1 },
    { I_SAVEAS_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &saa1 },
    { I_SAVEAS_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &saa1 },
    { I_SAVEAS_FILETYPE_POPUP,  ACT_SPECIAL,   (ClickParamsPtr) &saa2 },
    { I_SAVEAS_CLIENT,       ACT_TOGGLEFADE,   (ClickParamsPtr) &saa3 },
    { I_SAVEAS_HASWINDOW,    ACT_TOGGLEFADE,   (ClickParamsPtr) &saa4 },
                             { 0, ACT_END }
};

static SetOptDropRec sap1 = { I_SAVEAS_WINDOW, I_SAVEAS_HASWINDOW };

static DropDetailsRec sad1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &sap1 };

static DropDefRec sadrops[] =
{
    { I_SAVEAS_HASWINDOW,     &sad1 },
    { I_SAVEAS_WINDOW,        &sad1 },
    {-2}
};


/* --------------------------- scale definition -------------------------- */

#define  SC_FIND(field)   offsetof (ScaleTemplateRec, field)

static RefDefRec screfs[] =
{
    { REF_MSG, SC_FIND(title), FALSE },
    { REF_STR, SC_FIND(window), FALSE },
    { REF_END }
};

static TitleFldRec scf1 =
    { I_SCALE_TITLE_DEFAULT, I_SCALE_TITLE_OTHER,
      I_SCALE_TITLE, I_SCALE_TITLEMAX,
      I_SCALE_TITLEMAX_ADJ_UP, I_SCALE_TITLEMAX_ADJ_DOWN,
      SC_FIND(title), SC_FIND(maxtitle) };
static IntegerFldRec scf2 =
    { I_SCALE_MINIMUM, SC_FIND(minvalue), FALSE };
static IntegerFldRec scf3 =
    { I_SCALE_MAXIMUM, SC_FIND(maxvalue), FALSE };
static IntegerFldRec scf4 =
    { I_SCALE_STEPSIZE, SC_FIND(stepsize), FALSE };
static IntegerFldRec scf5 =
    { I_SCALE_PRESET_1, SC_FIND(stdvalue1), FALSE };
static IntegerFldRec scf6 =
    { I_SCALE_PRESET_2, SC_FIND(stdvalue2), FALSE };
static IntegerFldRec scf7 =
    { I_SCALE_PRESET_3, SC_FIND(stdvalue3), FALSE };
static IntegerFldRec scf8 =
    { I_SCALE_PRESET_4, SC_FIND(stdvalue4), FALSE };
static FlagFldRec scf9 =
    { I_SCALE_HASSCALETOFIT, SCALE_INCLUDESCALETOFIT, TRUE };
static FlagFldRec scf10 =
    { I_SCALE_EVENT_BEFORE, SCALE_GENERATESHOWEVENT, TRUE };
static FlagFldRec scf11 =
    { I_SCALE_EVENT_HIDDEN, SCALE_GENERATEHIDEEVENT, TRUE };
static OptConstStrFldRec scf12 =
    { I_SCALE_HASWINDOW, I_SCALE_WINDOW, SC_FIND(window) };

static FieldDefRec scfields[] =
{
    { FLD_TITLE,            (FldDefPtr) &scf1 },
    { FLD_INTEGER,          (FldDefPtr) &scf2 },
    { FLD_INTEGER,          (FldDefPtr) &scf3 },
    { FLD_INTEGER,          (FldDefPtr) &scf4 },
    { FLD_INTEGER,          (FldDefPtr) &scf5 },
    { FLD_INTEGER,          (FldDefPtr) &scf6 },
    { FLD_INTEGER,          (FldDefPtr) &scf7 },
    { FLD_INTEGER,          (FldDefPtr) &scf8 },
    { FLD_FLAG,             (FldDefPtr) &scf9 },
    { FLD_FLAG,             (FldDefPtr) &scf10 },
    { FLD_FLAG,             (FldDefPtr) &scf11 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &scf12 },
    { FLD_END, NULL}
};

static TitleClickRec sca1 =
    { I_SCALE_TITLE_DEFAULT, I_SCALE_TITLE_OTHER,
      I_SCALE_TITLE, I_SCALE_TITLEMAX,
      I_SCALE_TITLEMAX_ADJ_UP, I_SCALE_TITLEMAX_ADJ_DOWN };
static ToggleFadeClickRec sca2 = { I_SCALE_WINDOW };

static ClickDefRec scclicks[] =
{
    { I_SCALE_TITLE_DEFAULT,     ACT_TITLE,   (ClickParamsPtr) &sca1 },
    { I_SCALE_TITLE_OTHER,       ACT_TITLE,   (ClickParamsPtr) &sca1 },
    { I_SCALE_TITLEMAX_ADJ_UP,   ACT_TITLE,   (ClickParamsPtr) &sca1 },
    { I_SCALE_TITLEMAX_ADJ_DOWN, ACT_TITLE,   (ClickParamsPtr) &sca1 },
    { I_SCALE_HASWINDOW,    ACT_TOGGLEFADE,   (ClickParamsPtr) &sca2 }, 
                             { 0, ACT_END }
};

static SetOptDropRec scp1 = { I_SCALE_WINDOW, I_SCALE_HASWINDOW };

static DropDetailsRec scd1 =
    { OBJECT_DROP, WINDOW_OBJECT_CLASS, DROP_SETOPT, (DropParamsPtr) &scp1 };

static DropDefRec scdrops[] =
{
    { I_SCALE_HASWINDOW,     &scd1 },
    { I_SCALE_WINDOW,        &scd1 },
    {-2}
};


/* --------------the array of all object class definitions --------------- */


ObjectDefRec objectdefs[] =
{
    { CLASS_COLOURMENU, 100, "ColourMenu", NULL, 0,
      { sizeof (ColourMenuTemplateRec), cmrefs },
      cmfields, cmclicks, cmdrops,
      {
        I_COLOURMENU_TITLE,
        I_COLOURMENU_OK, I_COLOURMENU_CANCEL,
      },
      colours_create_menus, object_cm_init, object_cm_apply
    },

    { CLASS_COLOURDBOX, 100, "ColourDbox", NULL, 0,
      { sizeof (ColourDboxTemplateRec), cdrefs },
      cdfields, cdclicks, cddrops,
      {
        I_COLOURDBOX_TITLE,
        I_COLOURDBOX_OK, I_COLOURDBOX_CANCEL,
      },
      NULL, object_cd_init, object_cd_apply
    },

    { CLASS_DCS, 100, "DCS", NULL, 0,
      { sizeof (DCSTemplateRec), dcrefs },
      dcfields, dcclicks, dcdrops,
      {
        I_DCS_TITLE,
        I_DCS_OK, I_DCS_CANCEL,
      },
      NULL, NULL, NULL
    },

    { CLASS_FILEINFO, 100, "FileInfo", NULL, 0,
      { sizeof (FileInfoTemplateRec), firefs },
      fifields, ficlicks, fidrops,
      {
        I_FILEINFO_TITLE,
        I_FILEINFO_OK, I_FILEINFO_CANCEL,
      },
      object_fisa_create_menu, NULL, NULL
    },

    { CLASS_FONTDBOX, 100, "FontDbox", NULL, 0,
      { sizeof (FontDboxTemplateRec), fdrefs },
      fdfields, fdclicks, fddrops,
      {
        I_FONTDBOX_TITLE,
        I_FONTDBOX_OK, I_FONTDBOX_CANCEL,
      },
      NULL, object_fd_init, NULL
    },

    { CLASS_FONTMENU, 100, "FontMenu", NULL, 0,
      { sizeof (FontMenuTemplateRec), fmrefs },
      fmfields, fmclicks, fmdrops,
      {
        I_FONTMENU_INITIAL,
        I_FONTMENU_OK, I_FONTMENU_CANCEL,
      },
      NULL, object_fm_init, NULL
    },

    { CLASS_ICONBAR, 100, "Iconbar", NULL, 0,
      { sizeof (IconbarTemplateRec), ibrefs },
      ibfields, ibclicks, ibdrops,
      {
        I_ICONBAR_SPRITE,
        I_ICONBAR_OK, I_ICONBAR_CANCEL,
      },
      object_ib_create_menu, object_ib_init, NULL
    },

    { CLASS_PRINTDBOX, 100, "PrintDbox", NULL, 0,
      { sizeof (PrintDboxTemplateRec), pdrefs },
      pdfields, pdclicks, pddrops,
      {
        I_PRINTDBOX_COPIES,
        I_PRINTDBOX_OK, I_PRINTDBOX_CANCEL,
      },
      NULL, object_pd_init, object_pd_apply
    },

    { CLASS_PROGINFO, 100, "ProgInfo", NULL, 0,
      { sizeof (ProgInfoTemplateRec), pirefs },
      pifields, piclicks, pidrops,
      {
        I_PROGINFO_TITLE,
        I_PROGINFO_OK, I_PROGINFO_CANCEL,
      },
      object_pi_create_menu, object_pi_init, object_pi_apply
    },

    { CLASS_QUIT, 100, "Quit", NULL, 0,
      { sizeof (QuitTemplateRec), qurefs },
      qufields, quclicks, qudrops,
      {
        I_QUIT_TITLE,
        I_QUIT_OK, I_QUIT_CANCEL,
      },
      NULL, NULL, NULL
    },

    { CLASS_SAVEAS, 100, "SaveAs", NULL, 0,
      { sizeof (SaveAsTemplateRec), sarefs },
      safields, saclicks, sadrops,
      {
        I_SAVEAS_TITLE,
        I_SAVEAS_OK, I_SAVEAS_CANCEL,
      },
      NULL, object_sa_init, NULL
    },

    { CLASS_SCALE, 100, "Scale", NULL, 0,
      { sizeof (ScaleTemplateRec), screfs },
      scfields, scclicks, scdrops,
      {
        I_SCALE_TITLE,
        I_SCALE_OK, I_SCALE_CANCEL,
      },
      NULL, NULL, object_sc_apply
    },

    { -1 }   /* terminates array of object definitions */
};

/* -------------- the prototype unknown object definition----------------- */

static FieldDefRec ukfields[] =
{
    { FLD_END, NULL}
};

static SpecialClickRec uka1 = { object_uk_offset };
static ToggleFadeClickRec uka2 = { I_UNKNOWN_STRING };
static ToggleFadeClickRec uka3 = { I_UNKNOWN_MESSAGE };
static ToggleFadeClickRec uka4 = { I_UNKNOWN_OBJOFFSET };

static ClickDefRec ukclicks[] =
{
    { I_UNKNOWN_OFFSET_ADJ_UP,        ACT_SPECIAL, (ClickParamsPtr) &uka1 },
    { I_UNKNOWN_OFFSET_ADJ_DOWN,      ACT_SPECIAL, (ClickParamsPtr) &uka1 },
    { I_UNKNOWN_HASSTRING,         ACT_TOGGLEFADE, (ClickParamsPtr) &uka2 },
    { I_UNKNOWN_HASMESSAGE,        ACT_TOGGLEFADE, (ClickParamsPtr) &uka3 },
    { I_UNKNOWN_HASOBJOFFSET,      ACT_TOGGLEFADE, (ClickParamsPtr) &uka4 },
                                 { 0, ACT_END }
};

static DropDefRec ukdrops[] =
{
    {-2}
};

ObjectDefRec unkobjectdef =
    { 0, -1, "Unknown", NULL, 0,   /* class tba; version = -1 => "unknown" */
      { 0, NULL },                 /* size and refs defs filled in later   */
      ukfields, ukclicks, ukdrops,
      {
        I_UNKNOWN_INTEGER,
        I_UNKNOWN_OK, I_UNKNOWN_CANCEL,
      },
      NULL, object_uk_init, object_uk_apply
    };


/* ----------------------------------------------------------------------- */
